﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MapleLeaf.IdentityServer.Models {
    public class ClientViewModel {
        /// <summary>
        /// 主键
        /// </summary>
        public int Id { set; get; }

        /// <summary>
        /// 客户端的唯一ID
        /// </summary>
        public string ClientId { set; get; }
        /// <summary>
        /// 客户端名称
        /// </summary>
        public string ClientName { set; get; }
        /// <summary>
        /// 客户端类型
        /// </summary>
        public string ClientType { set; get; }
        /// <summary>
        /// 登入回调
        /// </summary>
        public string LoginRedirectUris { set; get; }
        /// <summary>
        /// 登出回调
        /// </summary>
        public string LogoutRedirectUris { set; get; }
        /// <summary>
        /// 描述
        /// </summary>
        public string Description { set; get; }
        /// <summary>
        /// 指定允许客户端使用的授权类型。使用GrantTypes该类进行常见组合。
        /// </summary>
        public string AllowedGrantTypes { set; get; }
        /// <summary>
        /// 指定是否允许此客户端通过浏览器接收访问令牌。这对于强化允许多种响应类型的流是有用的
        /// 例如，通过禁止应该使用code id_token来添加令牌响应类型并因此将令牌泄漏到浏览器的混合流客户端。
        /// </summary>
        public bool AllowAccessTokensViaBrowser { set; get; }
        /// <summary>
        /// 如果指定，将由默认CORS策略服务实现（内存和EF）用于为JavaScript客户端构建CORS策略。
        /// 配置CORS的一种方法是在客户端配置上使用AllowedCorsOrigins该集合。只需将客户端的原点添加到集合中，
        /// IdentityServer中的默认配置将查询这些值以允许来自源的跨源调用。
        /// 配置CORS时，请务必使用原点（不是URL）
        /// 例如https://foo:123/是一个URL，而是https://foo:123一个原点。
        /// </summary>
        public string AllowedCorsOrigins { set; get; }
        /// <summary>
        /// 访问令牌的生命周期，以秒为单位（默认为3600秒(1小时)）
        /// </summary>
        public int AccessTokenLifetime { set; get; }
        /// <summary>
        /// 允许的资源范围
        /// 默认情况下，客户端无权访问任何资源 - 通过添加相应的范围名称来指定允许的资源
        /// </summary>
        public string AllowedScopes { set; get; }

    }
}
